package com.sisbibvir.unmsm.controller;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.primefaces.component.datatable.DataTable;

import com.sisbibvir.unmsm.dao.JPAUtil;
import com.sisbibvir.unmsm.dao.LineaInvestigacionDAO;
import com.sisbibvir.unmsm.entidades.LineaDeInvestigacion;
import com.sisbibvir.unmsm.services.LineaInvestigacionService;

@ManagedBean(name = "lineaInvestigacionBean")
@SessionScoped
public class LineaInvestigacionController {

	private JPAUtil util;
	private LineaInvestigacionDAO li;
	private List<LineaDeInvestigacion> lineas;
	private LineaDeInvestigacion linea;
	private int id;
	private String descripcion;
	private LineaInvestigacionService objLineaInvestigacionService;
	private DataTable tabla;
	private boolean estado = false;

	public LineaInvestigacionController() {
		util = new JPAUtil();
		li = new LineaInvestigacionDAO(util.getEntityManager());
		lineas = li.ListarBusqueda("");
		linea = new LineaDeInvestigacion();
		linea.setDescripcion("");
		objLineaInvestigacionService = new LineaInvestigacionService();

	}

	public void EliminarLineaInvestigacion() {
		LineaDeInvestigacion line = new LineaDeInvestigacion();
		line = (LineaDeInvestigacion) tabla.getRowData();
		objLineaInvestigacionService.setObjLineaInvestigacion(line);
		objLineaInvestigacionService.EliminarLineaInvestigacion();
		System.out.println("Entro a LineaInvController: EliminarLineaInv()");
		FacesContext.getCurrentInstance().addMessage(
				null,
				new FacesMessage(FacesMessage.SEVERITY_INFO, "Eliminacion: ",
						"Exitosa"));
	}

	public void ActualizarEdicion() {
		LineaDeInvestigacion line = new LineaDeInvestigacion();
		line = (LineaDeInvestigacion) tabla.getRowData();
		objLineaInvestigacionService.setObjLineaInvestigacion(line);
		objLineaInvestigacionService.setIdEdicion(objLineaInvestigacionService
				.getObjLineaInvestigacion().getId());
		objLineaInvestigacionService
				.setDescripcionEdicion(objLineaInvestigacionService
						.getObjLineaInvestigacion().getDescripcion());
		System.out.println("Entro a LineaInvController: ActualizarEdicion()");
		estado = true;
	}

	public void ActualizarLineaInvestigacion() {
		objLineaInvestigacionService.ActualizarLineaInvestigacion();
		System.out.println("Entro a LineaInvController: ActualizarLineaInv()");
		estado = false;
		FacesContext.getCurrentInstance().addMessage(
				null,
				new FacesMessage(FacesMessage.SEVERITY_INFO, "Actualizacion: ",
						"Exitosa"));
	}

	public void verLinea() {
		LineaDeInvestigacion line = new LineaDeInvestigacion();
		line = (LineaDeInvestigacion) tabla.getRowData();
		objLineaInvestigacionService.setObjLineaInvestigacion(line);
		System.out.println("Entro a Verlinea: line "
				+ line.getDescripcion()
				+ " objLineaInves: "
				+ objLineaInvestigacionService.getObjLineaInvestigacion()
						.getDescripcion());
	}

	public void AgregarLineaInvestigacion() {
		objLineaInvestigacionService.AgregarLineaInvestigacion();
		FacesContext.getCurrentInstance().addMessage(
				null,
				new FacesMessage(FacesMessage.SEVERITY_INFO, "Grabacion: ",
						"Exitosa"));
	}

	public void agregarLinea(LineaDeInvestigacion linea) {
		li.create(linea);
	}

	public LineaDeInvestigacion getLinea() {
		return linea;
	}

	public void setLinea(LineaDeInvestigacion linea) {
		this.linea = linea;
	}

	public List<LineaDeInvestigacion> getLineas() {
		return lineas;
	}

	public void setLineas(List<LineaDeInvestigacion> lineas) {
		this.lineas = lineas;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public LineaInvestigacionService getObjLineaInvestigacionService() {
		return objLineaInvestigacionService;
	}

	public void setObjLineaInvestigacionService(
			LineaInvestigacionService objLineaInvestigacionService) {
		this.objLineaInvestigacionService = objLineaInvestigacionService;
	}

	public void MostrarExito(ActionEvent evt) {
		FacesContext.getCurrentInstance().addMessage(
				null,
				new FacesMessage(FacesMessage.SEVERITY_INFO,
						"Sample info message", "PrimeFaces rocks!"));
	}

	public DataTable getTabla() {
		return tabla;
	}

	public void setTabla(DataTable tabla) {
		this.tabla = tabla;
	}

	public boolean isEstado() {
		return estado;
	}

	public void setEstado(boolean estado) {
		this.estado = estado;
	}

	
}
